package com.nofeng.wx.service.stock;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.nofeng.wx.utils.BaseUtils;
import com.nofeng.wx.utils.IndicatrixUtils;
import org.apache.commons.lang3.StringUtils;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Collectors;

// 数据模型定义
class StockDataItem {
    @JSONField(name = "day")
    String date;
    @JSONField(name = "close")
    String close;
    @JSONField(name = "low")
    String low;
    @JSONField(name = "high")
    String high;
    @JSONField(name = "open")
    String open;
    @JSONField(name = "volume")
    String volume;
    @JSONField(name = "rsi")
    double rsi;

    // 转换字符串价格为double
    public double getClose() {
        return Double.parseDouble(close);
    }

    public double getLow() {
        return Double.parseDouble(low);
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public void setClose(String close) {
        this.close = close;
    }

    public void setLow(String low) {
        this.low = low;
    }

    public String getHigh() {
        return high;
    }

    public void setHigh(String high) {
        this.high = high;
    }

    public String getOpen() {
        return open;
    }

    public void setOpen(String open) {
        this.open = open;
    }

    public String getVolume() {
        return volume;
    }

    public void setVolume(String volume) {
        this.volume = volume;
    }

    public double getRsi() {
        return rsi;
    }

    public void setRsi(double rsi) {
        this.rsi = rsi;
    }
}

 class BacktestData {
    @JSONField(name = "data")
    List<StockDataItem> data;
    @JSONField(name = "stock")
    StockInfo stock;

    @JSONField(name = "atr21")
    String atr21;

    public List<StockDataItem> getData() {
        return data;
    }

    public void setData(List<StockDataItem> data) {
        this.data = data;
    }

    public StockInfo getStock() {
        return stock;
    }

    public void setStock(StockInfo stock) {
        this.stock = stock;
    }

    public String getAtr21() {
        return atr21;
    }

    public void setAtr21(String atr21) {
        this.atr21 = atr21;
    }
}

// 交易记录类
class TradeRecord {
    String buyDate;
    String sellDate;
    double buyPrice;
    double sellPrice;
    double returnRate;
    StockDataItem buyDataItem;
    StockDataItem sellDataItem;
    String buyReason;
    String sellReason;

    public TradeRecord(StockDataItem buyDataItem,String buyDate, StockDataItem sellDataItem,String sellDate,
                       double buyPrice, double sellPrice,String buyReason,String sellReason) {
        this.buyDataItem=buyDataItem;
        this.sellDataItem=sellDataItem;
        this.buyDate = buyDate;
        this.sellDate = sellDate;
        this.buyPrice = buyPrice;
        this.sellPrice = sellPrice;
        this.returnRate = (sellPrice - buyPrice) / buyPrice;
        this.buyReason=buyReason;
        this.sellReason=sellReason;
    }

    public String getBuyReason() {
        return buyReason;
    }

    public void setBuyReason(String buyReason) {
        this.buyReason = buyReason;
    }

    public String getSellReason() {
        return sellReason;
    }

    public void setSellReason(String sellReason) {
        this.sellReason = sellReason;
    }

    public String getBuyDate() {
        return buyDate;
    }

    public void setBuyDate(String buyDate) {
        this.buyDate = buyDate;
    }

    public String getSellDate() {
        return sellDate;
    }

    public void setSellDate(String sellDate) {
        this.sellDate = sellDate;
    }

    public double getBuyPrice() {
        return buyPrice;
    }

    public void setBuyPrice(double buyPrice) {
        this.buyPrice = buyPrice;
    }

    public double getSellPrice() {
        return sellPrice;
    }

    public void setSellPrice(double sellPrice) {
        this.sellPrice = sellPrice;
    }

    public double getReturnRate() {
        return returnRate;
    }

    public void setReturnRate(double returnRate) {
        this.returnRate = returnRate;
    }

    public StockDataItem getBuyDataItem() {
        return buyDataItem;
    }

    public void setBuyDataItem(StockDataItem buyDataItem) {
        this.buyDataItem = buyDataItem;
    }

    public StockDataItem getSellDataItem() {
        return sellDataItem;
    }

    public void setSellDataItem(StockDataItem sellDataItem) {
        this.sellDataItem = sellDataItem;
    }
}

public class StrategyBacktester {

    public static String http(String code) {
        StringBuilder response = new StringBuilder();
        try {
            // 1. 定义目标 URL
            URL url = new URL("http://8.138.24.62:8080/stock/stock/" + code);

            // 2. 打开连接并设置为 GET 请求
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");

            // 3. 获取响应状态码
            int statusCode = connection.getResponseCode();

            // 4. 根据状态码选择输入流或错误流
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(
                            (statusCode >= 200 && statusCode < 300) ?
                                    connection.getInputStream() :
                                    connection.getErrorStream(),
                            StandardCharsets.UTF_8
                    )
            );


            String line;
            while ((line = reader.readLine()) != null) {
                response.append(line).append("\n");
            }
            reader.close();


        } catch (Exception e) {
            e.printStackTrace();
        }
        return response.toString();
    }

    public static BacktestResult runBacktest(String jsonStr) {
        BacktestData data = JSON.parseObject(jsonStr, BacktestData.class);
        List<StockDataItem> items = data.data;
        BacktestResult result = new BacktestResult();
        result.setStock(data.getStock());
        result.setAtr21(data.atr21);

        // 策略参数
        final int MA_DAYS = 20;
        final int MA_DAYS_LONG = 50;
        final int MA_DAYS_SHORT = 14;
        //单笔最大回撤率配置
         double maxDrawDownConfig = new Double(data.atr21) / data.data.get(data.data.size() - 1).getClose(); // 2%回撤阈值



        Map<String, StockDataItem> itemMap = items.stream().collect(Collectors.toMap(StockDataItem::getDate, s -> s));
        // 计算移动平均线
        List<Double> maList = getMaList(items, MA_DAYS);
        List<Double> maLongList = getMaList(items, MA_DAYS_LONG);
        List<Double> ma14List = getMaList(items, MA_DAYS_SHORT);

        Double minMaLong=Collections.min(maLongList.stream().filter(Objects::nonNull).collect(Collectors.toList()));

        // 策略状态
        boolean holding = false;
        double entryPrice = 0;
        String entryDate = "";
        String buyReason="";
        String sellReason="";

        List<Double> equityCurve = new ArrayList<>(Collections.singletonList(1.0));

        // 持仓期间专用回撤跟踪
        double positionPeak = 1.0; // 持仓期间的峰值
        double currentDrawdown = 0;

        for (int i = MA_DAYS_LONG; i < items.size(); i++) {
            boolean now = i == items.size() - 1;
            StockDataItem item = items.get(i);
            StockDataItem yesterdayItem = items.get(i - 1);
            double currentPrice = item.getClose();
            Double currentMA = maList.get(i);



            // 当前权益计算（非持仓时权益不变）
            double currentEquity = equityCurve.get(equityCurve.size() - 1);
            if (holding) {
                currentEquity *= (currentPrice / entryPrice);

                // 更新持仓期间的最高点（关键修正）
                if (currentEquity > positionPeak) {
                    positionPeak = currentEquity;
                }

                // 计算当前回撤（相对于持仓期间的最高点）
                currentDrawdown = (positionPeak - currentEquity) / positionPeak;

                // 触发止损逻辑（新增）
                //盈利<5时：仅用均线卖出
                double peak = (item.getClose()-entryPrice)/entryPrice;
                boolean cut= peak <-maxDrawDownConfig*2;
//                boolean cut0= peak>0 && peak <0.05 &&currentDrawdown>0.02;
                boolean cut1= peak>0 && peak <0.05 &&currentPrice<ma14List.get(i);
                //盈利5-15%时：回撤>1*波动率或跌破均线
                boolean cut2=(peak>=0.05 && peak<0.15) && currentDrawdown>maxDrawDownConfig && currentPrice<ma14List.get(i);
                //盈利大于15时：回撤>0.5*波动率止盈利
                boolean cut3 = peak >= 0.15 && currentDrawdown >= maxDrawDownConfig * 0.5;
                if (cut||cut1
                        || cut2
                        || cut3
                ) {
                    holding = false;
                    if (now) {
                        result.setToDaySell(true);
                    }
                    sellReason="回撤";
                    if(cut){sellReason="止损";};
//                    if(cut0){sellReason="保本回撤";};
                    if(cut1){sellReason="破均线";};

                    if(cut2){sellReason="回撤";};

                    if(cut3){sellReason="保盈";};
                    result.trades.add(new TradeRecord(
                            itemMap.get(entryDate),
                            entryDate,
                            item,
                            item.getDate(),
                            entryPrice,
                            currentPrice,buyReason,sellReason
                    ));
                    sellReason="";

                    // 更新权益并重置跟踪变量
                    equityCurve.add(currentEquity);
                    positionPeak = currentEquity; // 重置为当前权益
                    continue; // 跳过后续逻辑
                }
            }

            // 买入信号（仅当未持仓时）
            if(!holding ){
//                if (currentMA != null && ma3DaysBefore != null
//                        && currentMA > ma3DaysBefore
////                        && currentMA<=maLongList.get(i)
//                    &&items.get(i - 2).getClose()<maList.get(i - 2)
//                      && yesterdayItem.getClose()>maList.get(i - 1)
//                        && currentPrice > currentMA) {
                if (!holding && currentMA != null
                        && items.get(i - 1).getClose()>ma14List.get(i-1)
                        && ma14List.get(i) > ma14List.get(i-1)
                        && currentPrice > ma14List.get(i)) {
                    holding = true;
                    entryPrice = currentPrice;
                    entryDate = item.getDate();
                    positionPeak = equityCurve.get(equityCurve.size() - 1); // 重置为买入时权益
                    buyReason="站上均线";
                    if (now) {
                        result.setToDayBuy(true);
                    }
                }


//                if(item.getClose()>items.get(i - 1).getClose() && items.get(i - 1).getClose()>items.get(i - 2).getClose()
//                        &&items.get(i - 2).getRsi()<20
//                        &&items.get(i - 1).getRsi()>items.get(i - 2).getRsi()
//                        &&item.getClose()> minMaLong){
//                    holding = true;
//                    entryPrice = currentPrice;
//                    entryDate = item.getDate();
//                    positionPeak = equityCurve.get(equityCurve.size() - 1); // 重置为买入时权益
//                    buyReason="底部回升";
//                    if (now) {
//                        result.setToDayBuy(true);
//                    }
//                }
            }

            // 卖出信号（原策略条件）
            if (holding && i >= 1 && buyReason!="底部回升") {
                boolean cond1 = yesterdayItem.getClose() < ma14List.get(i - 1);
                boolean cond2 = currentPrice < currentMA;
                boolean cond3 = currentDrawdown >0.01;
                if (cond1 && cond2 && cond3) {
                    holding = false;
                    sellReason="跌破20日均线";
                    result.trades.add(new TradeRecord(
                            itemMap.get(entryDate),
                            entryDate,
                            item,
                            item.getDate(),
                            entryPrice,
                            currentPrice,
                            buyReason,
                            sellReason
                    ));
                    sellReason="";
                    currentEquity = equityCurve.get(equityCurve.size() - 1)
                            * (currentPrice / entryPrice);
                    positionPeak = currentEquity; // 重置为卖出后权益
                    if (now) {
                        result.setToDaySell(true);
                    }
                }
            }

            // 卖出信号（原策略条件）
            if (holding && i >= 1 && buyReason!="底部回升" ) {
                boolean cond1 = currentPrice < ma14List.get(i - 1);
                boolean cond2 = (yesterdayItem.getClose()-currentPrice) /yesterdayItem.getClose()< -1*maxDrawDownConfig*1.5;

                if (cond1 && cond2) {
                    holding = false;
                    sellReason="跌破均线且日跌幅>1.5倍";
                    result.trades.add(new TradeRecord(
                            itemMap.get(entryDate),
                            entryDate,
                            item,
                            item.getDate(),
                            entryPrice,
                            currentPrice,
                            buyReason,
                            sellReason
                    ));
                    sellReason="";
                    currentEquity = equityCurve.get(equityCurve.size() - 1)
                            * (currentPrice / entryPrice);
                    positionPeak = currentEquity; // 重置为卖出后权益
                    if (now) {
                        result.setToDaySell(true);
                    }
                }
            }

            if(holding && now){
                result.setHolding(true);
                sellReason="今日"+sellReason;
                result.trades.add(new TradeRecord(
                        itemMap.get(entryDate),
                        entryDate,
                        item,
                        item.getDate(),
                        entryPrice,
                        currentPrice,
                        buyReason,
                        sellReason
                ));
                currentEquity = equityCurve.get(equityCurve.size() - 1)
                        * (currentPrice / entryPrice);
                positionPeak = currentEquity; // 重置为卖出后权益

            }

            // 更新权益曲线（仅当未触发任何操作时）
            if (!holding) {
                equityCurve.add(currentEquity);
            }
        }

        // 计算结果指标
        result.totalReturn = equityCurve.get(equityCurve.size() - 1) - 1.0;
        result.setMaxDrawDownConfig(maxDrawDownConfig);

        return result;
    }



    private static List<Double> getMaList(List<StockDataItem> items, int maDays) {
        List<Double> maList = new ArrayList<>();
        for (int i = 0; i < items.size(); i++) {
            if (i < maDays - 1) {
                maList.add(null);
                continue;
            }
            double sum = items.subList(i - maDays + 1, i + 1)
                    .stream()
                    .mapToDouble(StockDataItem::getClose)
                    .sum();
            maList.add(sum / maDays);
        }
        return maList;
    }


    public static void main(String[] args) {
//        String jsonStr = "{\"code\":\"200\",\"atr21\":0.04833333333333342,\"data\":[{\"volume\":\"2194052531\",\"high\":\"3.888\",\"low\":\"3.818\",\"rsi\":100.0,\"day\":\"20230829\",\"close\":\"3.859\",\"open\":\"3.820\"},{\"volume\":\"1036132286\",\"high\":\"3.884\",\"low\":\"3.850\",\"rsi\":94.5945946,\"day\":\"20230830\",\"close\":\"3.858\",\"open\":\"3.864\"},{\"volume\":\"838468826\",\"high\":\"3.865\",\"low\":\"3.830\",\"rsi\":41.1764706,\"day\":\"20230831\",\"close\":\"3.839\",\"open\":\"3.858\"},{\"volume\":\"792692488\",\"high\":\"3.880\",\"low\":\"3.850\",\"rsi\":68.0,\"day\":\"20230901\",\"close\":\"3.862\",\"open\":\"3.857\"},{\"volume\":\"1185523274\",\"high\":\"3.930\",\"low\":\"3.874\",\"rsi\":86.7346939,\"day\":\"20230904\",\"close\":\"3.920\",\"open\":\"3.890\"},{\"volume\":\"629770096\",\"high\":\"3.912\",\"low\":\"3.885\",\"rsi\":64.4549763,\"day\":\"20230905\",\"close\":\"3.893\",\"open\":\"3.910\"},{\"volume\":\"715176127\",\"high\":\"3.893\",\"low\":\"3.866\",\"rsi\":57.6719577,\"day\":\"20230906\",\"close\":\"3.883\",\"open\":\"3.880\"},{\"volume\":\"941034963\",\"high\":\"3.876\",\"low\":\"3.826\",\"rsi\":33.8521401,\"day\":\"20230907\",\"close\":\"3.830\",\"open\":\"3.875\"},{\"volume\":\"818635834\",\"high\":\"3.828\",\"low\":\"3.796\",\"rsi\":28.2258065,\"day\":\"20230908\",\"close\":\"3.809\",\"open\":\"3.815\"},{\"volume\":\"816650788\",\"high\":\"3.861\",\"low\":\"3.803\",\"rsi\":44.0944882,\"day\":\"20230911\",\"close\":\"3.837\",\"open\":\"3.810\"},{\"volume\":\"594936910\",\"high\":\"3.846\",\"low\":\"3.825\",\"rsi\":42.0560748,\"day\":\"20230912\",\"close\":\"3.832\",\"open\":\"3.834\"},{\"volume\":\"1032133123\",\"high\":\"3.842\",\"low\":\"3.787\",\"rsi\":32.5791855,\"day\":\"20230913\",\"close\":\"3.807\",\"open\":\"3.831\"},{\"volume\":\"928283035\",\"high\":\"3.818\",\"low\":\"3.785\",\"rsi\":31.6939891,\"day\":\"20230914\",\"close\":\"3.804\",\"open\":\"3.806\"},{\"volume\":\"1190622112\",\"high\":\"3.818\",\"low\":\"3.769\",\"rsi\":25.5555556,\"day\":\"20230915\",\"close\":\"3.787\",\"open\":\"3.811\"},{\"volume\":\"985926393\",\"high\":\"3.811\",\"low\":\"3.764\",\"rsi\":37.0588235,\"day\":\"20230918\",\"close\":\"3.800\",\"open\":\"3.778\"},{\"volume\":\"727006269\",\"high\":\"3.798\",\"low\":\"3.772\",\"rsi\":34.2465753,\"day\":\"20230919\",\"close\":\"3.795\",\"open\":\"3.796\"},{\"volume\":\"634135498\",\"high\":\"3.793\",\"low\":\"3.777\",\"rsi\":26.1437908,\"day\":\"20230920\",\"close\":\"3.777\",\"open\":\"3.785\"},{\"volume\":\"899197017\",\"high\":\"3.783\",\"low\":\"3.741\",\"rsi\":16.6666667,\"day\":\"20230921\",\"close\":\"3.742\",\"open\":\"3.769\"},{\"volume\":\"1247116554\",\"high\":\"3.818\",\"low\":\"3.735\",\"rsi\":57.8947368,\"day\":\"20230922\",\"close\":\"3.817\",\"open\":\"3.736\"},{\"volume\":\"700905651\",\"high\":\"3.809\",\"low\":\"3.782\",\"rsi\":47.1571906,\"day\":\"20230925\",\"close\":\"3.789\",\"open\":\"3.806\"},{\"volume\":\"862908481\",\"high\":\"3.797\",\"low\":\"3.766\",\"rsi\":40.2135231,\"day\":\"20230926\",\"close\":\"3.768\",\"open\":\"3.786\"},{\"volume\":\"1078053958\",\"high\":\"3.805\",\"low\":\"3.766\",\"rsi\":45.0819672,\"day\":\"20230927\",\"close\":\"3.778\",\"open\":\"3.767\"},{\"volume\":\"1120612353\",\"high\":\"3.791\",\"low\":\"3.756\",\"rsi\":39.4618834,\"day\":\"20230928\",\"close\":\"3.764\",\"open\":\"3.785\"},{\"volume\":\"875213072\",\"high\":\"3.768\",\"low\":\"3.713\",\"rsi\":35.3535354,\"day\":\"20231009\",\"close\":\"3.754\",\"open\":\"3.757\"},{\"volume\":\"927932376\",\"high\":\"3.778\",\"low\":\"3.724\",\"rsi\":26.4150943,\"day\":\"20231010\",\"close\":\"3.727\",\"open\":\"3.766\"},{\"volume\":\"893498708\",\"high\":\"3.762\",\"low\":\"3.727\",\"rsi\":32.7956989,\"day\":\"20231011\",\"close\":\"3.735\",\"open\":\"3.745\"},{\"volume\":\"933521569\",\"high\":\"3.785\",\"low\":\"3.752\",\"rsi\":54.7511312,\"day\":\"20231012\",\"close\":\"3.771\",\"open\":\"3.770\"},{\"volume\":\"1135095339\",\"high\":\"3.751\",\"low\":\"3.724\",\"rsi\":39.2712551,\"day\":\"20231013\",\"close\":\"3.736\",\"open\":\"3.750\"},{\"volume\":\"1138980584\",\"high\":\"3.738\",\"low\":\"3.682\",\"rsi\":27.4647887,\"day\":\"20231016\",\"close\":\"3.693\",\"open\":\"3.736\"},{\"volume\":\"888060300\",\"high\":\"3.713\",\"low\":\"3.687\",\"rsi\":34.2629482,\"day\":\"20231017\",\"close\":\"3.705\",\"open\":\"3.700\"},{\"volume\":\"810270594\",\"high\":\"3.703\",\"low\":\"3.675\",\"rsi\":26.848249,\"day\":\"20231018\",\"close\":\"3.677\",\"open\":\"3.699\"},{\"volume\":\"1690368777\",\"high\":\"3.660\",\"low\":\"3.595\",\"rsi\":15.3203343,\"day\":\"20231019\",\"close\":\"3.600\",\"open\":\"3.660\"},{\"volume\":\"1740446164\",\"high\":\"3.600\",\"low\":\"3.565\",\"rsi\":13.622291,\"day\":\"20231020\",\"close\":\"3.582\",\"open\":\"3.583\"},{\"volume\":\"2710241709\",\"high\":\"3.570\",\"low\":\"3.512\",\"rsi\":10.4790419,\"day\":\"20231023\",\"close\":\"3.544\",\"open\":\"3.568\"},{\"volume\":\"1535012975\",\"high\":\"3.563\",\"low\":\"3.520\",\"rsi\":13.7184116,\"day\":\"20231024\",\"close\":\"3.549\",\"open\":\"3.553\"},{\"volume\":\"1383351568\",\"high\":\"3.603\",\"low\":\"3.567\",\"rsi\":26.8199234,\"day\":\"20231025\",\"close\":\"3.569\",\"open\":\"3.588\"},{\"volume\":\"1143609497\",\"high\":\"3.586\",\"low\":\"3.548\",\"rsi\":34.893617,\"day\":\"20231026\",\"close\":\"3.582\",\"open\":\"3.555\"},{\"volume\":\"1647662397\",\"high\":\"3.649\",\"low\":\"3.565\",\"rsi\":58.7837838,\"day\":\"20231027\",\"close\":\"3.636\",\"open\":\"3.574\"},{\"volume\":\"961401373\",\"high\":\"3.663\",\"low\":\"3.620\",\"rsi\":63.5687732,\"day\":\"20231030\",\"close\":\"3.652\",\"open\":\"3.622\"},{\"volume\":\"839660029\",\"high\":\"3.650\",\"low\":\"3.622\",\"rsi\":59.3073593,\"day\":\"20231031\",\"close\":\"3.644\",\"open\":\"3.645\"},{\"volume\":\"811983400\",\"high\":\"3.680\",\"low\":\"3.632\",\"rsi\":58.2010582,\"day\":\"20231101\",\"close\":\"3.642\",\"open\":\"3.680\"},{\"volume\":\"1075381583\",\"high\":\"3.669\",\"low\":\"3.624\",\"rsi\":47.5675676,\"day\":\"20231102\",\"close\":\"3.625\",\"open\":\"3.648\"},{\"volume\":\"1057822683\",\"high\":\"3.668\",\"low\":\"3.630\",\"rsi\":61.7647059,\"day\":\"20231103\",\"close\":\"3.653\",\"open\":\"3.631\"},{\"volume\":\"1176649562\",\"high\":\"3.705\",\"low\":\"3.674\",\"rsi\":76.0617761,\"day\":\"20231106\",\"close\":\"3.701\",\"open\":\"3.675\"},{\"volume\":\"657529091\",\"high\":\"3.701\",\"low\":\"3.676\",\"rsi\":68.6956522,\"day\":\"20231107\",\"close\":\"3.690\",\"open\":\"3.692\"},{\"volume\":\"1135321220\",\"high\":\"3.696\",\"low\":\"3.658\",\"rsi\":61.1650485,\"day\":\"20231108\",\"close\":\"3.679\",\"open\":\"3.683\"},{\"volume\":\"818569445\",\"high\":\"3.695\",\"low\":\"3.669\",\"rsi\":62.5730994,\"day\":\"20231109\",\"close\":\"3.682\",\"open\":\"3.671\"},{\"volume\":\"784176792\",\"high\":\"3.668\",\"low\":\"3.643\",\"rsi\":45.026178,\"day\":\"20231110\",\"close\":\"3.655\",\"open\":\"3.668\"},{\"volume\":\"674463335\",\"high\":\"3.666\",\"low\":\"3.630\",\"rsi\":42.3312883,\"day\":\"20231113\",\"close\":\"3.650\",\"open\":\"3.659\"},{\"volume\":\"753317217\",\"high\":\"3.670\",\"low\":\"3.635\",\"rsi\":42.3076923,\"day\":\"20231114\",\"close\":\"3.650\",\"open\":\"3.654\"},{\"volume\":\"994063130\",\"high\":\"3.691\",\"low\":\"3.663\",\"rsi\":61.038961,\"day\":\"20231115\",\"close\":\"3.675\",\"open\":\"3.680\"},{\"volume\":\"881556665\",\"high\":\"3.673\",\"low\":\"3.637\",\"rsi\":38.4615385,\"day\":\"20231116\",\"close\":\"3.639\",\"open\":\"3.670\"},{\"volume\":\"1198450872\",\"high\":\"3.638\",\"low\":\"3.612\",\"rsi\":36.1445783,\"day\":\"20231117\",\"close\":\"3.634\",\"open\":\"3.630\"},{\"volume\":\"858430360\",\"high\":\"3.657\",\"low\":\"3.610\",\"rsi\":45.1612903,\"day\":\"20231120\",\"close\":\"3.645\",\"open\":\"3.637\"},{\"volume\":\"931605485\",\"high\":\"3.686\",\"low\":\"3.640\",\"rsi\":49.2537313,\"day\":\"20231121\",\"close\":\"3.650\",\"open\":\"3.655\"},{\"volume\":\"762202706\",\"high\":\"3.646\",\"low\":\"3.610\",\"rsi\":28.6486486,\"day\":\"20231122\",\"close\":\"3.611\",\"open\":\"3.641\"},{\"volume\":\"774971808\",\"high\":\"3.632\",\"low\":\"3.595\",\"rsi\":43.0107527,\"day\":\"20231123\",\"close\":\"3.630\",\"open\":\"3.609\"},{\"volume\":\"743453294\",\"high\":\"3.627\",\"low\":\"3.598\",\"rsi\":32.160804,\"day\":\"20231124\",\"close\":\"3.605\",\"open\":\"3.626\"},{\"volume\":\"776295648\",\"high\":\"3.604\",\"low\":\"3.557\",\"rsi\":24.6376812,\"day\":\"20231127\",\"close\":\"3.581\",\"open\":\"3.604\"},{\"volume\":\"727483741\",\"high\":\"3.590\",\"low\":\"3.566\",\"rsi\":28.1609195,\"day\":\"20231128\",\"close\":\"3.585\",\"open\":\"3.575\"},{\"volume\":\"759056998\",\"high\":\"3.589\",\"low\":\"3.545\",\"rsi\":20.2072539,\"day\":\"20231129\",\"close\":\"3.558\",\"open\":\"3.586\"},{\"volume\":\"667810076\",\"high\":\"3.572\",\"low\":\"3.547\",\"rsi\":24.0740741,\"day\":\"20231130\",\"close\":\"3.562\",\"open\":\"3.554\"},{\"volume\":\"860468131\",\"high\":\"3.567\",\"low\":\"3.519\",\"rsi\":19.7452229,\"day\":\"20231201\",\"close\":\"3.548\",\"open\":\"3.561\"},{\"volume\":\"692522952\",\"high\":\"3.554\",\"low\":\"3.523\",\"rsi\":14.3678161,\"day\":\"20231204\",\"close\":\"3.524\",\"open\":\"3.551\"},{\"volume\":\"1008789571\",\"high\":\"3.519\",\"low\":\"3.457\",\"rsi\":7.3800738,\"day\":\"20231205\",\"close\":\"3.458\",\"open\":\"3.519\"},{\"volume\":\"1001944865\",\"high\":\"3.483\",\"low\":\"3.444\",\"rsi\":11.4537445,\"day\":\"20231206\",\"close\":\"3.463\",\"open\":\"3.454\"},{\"volume\":\"934505826\",\"high\":\"3.468\",\"low\":\"3.431\",\"rsi\":10.5,\"day\":\"20231207\",\"close\":\"3.454\",\"open\":\"3.461\"},{\"volume\":\"709198592\",\"high\":\"3.473\",\"low\":\"3.450\",\"rsi\":17.816092,\"day\":\"20231208\",\"close\":\"3.461\",\"open\":\"3.455\"},{\"volume\":\"998247834\",\"high\":\"3.497\",\"low\":\"3.415\",\"rsi\":39.0374332,\"day\":\"20231211\",\"close\":\"3.485\",\"open\":\"3.440\"},{\"volume\":\"640724215\",\"high\":\"3.495\",\"low\":\"3.473\",\"rsi\":44.8484848,\"day\":\"20231212\",\"close\":\"3.493\",\"open\":\"3.476\"},{\"volume\":\"708815211\",\"high\":\"3.486\",\"low\":\"3.432\",\"rsi\":23.7903226,\"day\":\"20231213\",\"close\":\"3.435\",\"open\":\"3.482\"},{\"volume\":\"741533123\",\"high\":\"3.465\",\"low\":\"3.414\",\"rsi\":20.4347826,\"day\":\"20231214\",\"close\":\"3.419\",\"open\":\"3.451\"},{\"volume\":\"899976785\",\"high\":\"3.454\",\"low\":\"3.405\",\"rsi\":19.1919192,\"day\":\"20231215\",\"close\":\"3.412\",\"open\":\"3.430\"},{\"volume\":\"847303752\",\"high\":\"3.419\",\"low\":\"3.380\",\"rsi\":16.1290323,\"day\":\"20231218\",\"close\":\"3.398\",\"open\":\"3.398\"},{\"volume\":\"1098536629\",\"high\":\"3.414\",\"low\":\"3.380\",\"rsi\":18.3006536,\"day\":\"20231219\",\"close\":\"3.400\",\"open\":\"3.397\"},{\"volume\":\"1034717610\",\"high\":\"3.409\",\"low\":\"3.365\",\"rsi\":11.9565217,\"day\":\"20231220\",\"close\":\"3.369\",\"open\":\"3.404\"},{\"volume\":\"1592448074\",\"high\":\"3.411\",\"low\":\"3.352\",\"rsi\":38.0952381,\"day\":\"20231221\",\"close\":\"3.400\",\"open\":\"3.355\"},{\"volume\":\"2076526541\",\"high\":\"3.430\",\"low\":\"3.382\",\"rsi\":42.2222222,\"day\":\"20231222\",\"close\":\"3.406\",\"open\":\"3.397\"},{\"volume\":\"1004146545\",\"high\":\"3.420\",\"low\":\"3.401\",\"rsi\":48.7654321,\"day\":\"20231225\",\"close\":\"3.415\",\"open\":\"3.405\"},{\"volume\":\"777169320\",\"high\":\"3.413\",\"low\":\"3.385\",\"rsi\":37.2781065,\"day\":\"20231226\",\"close\":\"3.395\",\"open\":\"3.413\"},{\"volume\":\"836172465\",\"high\":\"3.411\",\"low\":\"3.378\",\"rsi\":45.1612903,\"day\":\"20231227\",\"close\":\"3.405\",\"open\":\"3.396\"},{\"volume\":\"2383299192\",\"high\":\"3.498\",\"low\":\"3.400\",\"rsi\":76.7123288,\"day\":\"20231228\",\"close\":\"3.489\",\"open\":\"3.401\"},{\"volume\":\"2518873484\",\"high\":\"3.505\",\"low\":\"3.482\",\"rsi\":78.6561265,\"day\":\"20231229\",\"close\":\"3.499\",\"open\":\"3.488\"},{\"volume\":\"942930578\",\"high\":\"3.502\",\"low\":\"3.451\",\"rsi\":54.0816327,\"day\":\"20240102\",\"close\":\"3.453\",\"open\":\"3.502\"},{\"volume\":\"1061750273\",\"high\":\"3.460\",\"low\":\"3.428\",\"rsi\":49.8039216,\"day\":\"20240103\",\"close\":\"3.443\",\"open\":\"3.446\"},{\"volume\":\"1666152481\",\"high\":\"3.442\",\"low\":\"3.387\",\"rsi\":38.6363636,\"day\":\"20240104\",\"close\":\"3.413\",\"open\":\"3.442\"},{\"volume\":\"1699669666\",\"high\":\"3.439\",\"low\":\"3.377\",\"rsi\":33.3333333,\"day\":\"20240105\",\"close\":\"3.396\",\"open\":\"3.404\"},{\"volume\":\"1730424386\",\"high\":\"3.403\",\"low\":\"3.346\",\"rsi\":22.6804124,\"day\":\"20240108\",\"close\":\"3.349\",\"open\":\"3.389\"},{\"volume\":\"1131217813\",\"high\":\"3.371\",\"low\":\"3.339\",\"rsi\":27.7108434,\"day\":\"20240109\",\"close\":\"3.357\",\"open\":\"3.351\"},{\"volume\":\"958254057\",\"high\":\"3.381\",\"low\":\"3.332\",\"rsi\":23.8095238,\"day\":\"20240110\",\"close\":\"3.341\",\"open\":\"3.350\"},{\"volume\":\"1266237158\",\"high\":\"3.380\",\"low\":\"3.334\",\"rsi\":36.7713004,\"day\":\"20240111\",\"close\":\"3.360\",\"open\":\"3.341\"},{\"volume\":\"841327273\",\"high\":\"3.377\",\"low\":\"3.346\",\"rsi\":32.8358209,\"day\":\"20240112\",\"close\":\"3.349\",\"open\":\"3.351\"},{\"volume\":\"905570620\",\"high\":\"3.375\",\"low\":\"3.324\",\"rsi\":31.3609467,\"day\":\"20240115\",\"close\":\"3.345\",\"open\":\"3.330\"},{\"volume\":\"1768952352\",\"high\":\"3.368\",\"low\":\"3.326\",\"rsi\":48.0446927,\"day\":\"20240116\",\"close\":\"3.367\",\"open\":\"3.340\"},{\"volume\":\"1286215182\",\"high\":\"3.357\",\"low\":\"3.290\",\"rsi\":23.5494881,\"day\":\"20240117\",\"close\":\"3.292\",\"open\":\"3.357\"},{\"volume\":\"4754351134\",\"high\":\"3.275\",\"low\":\"3.166\",\"rsi\":19.5035461,\"day\":\"20240118\",\"close\":\"3.268\",\"open\":\"3.218\"},{\"volume\":\"3694452124\",\"high\":\"3.285\",\"low\":\"3.242\",\"rsi\":24.1666667,\"day\":\"20240119\",\"close\":\"3.275\",\"open\":\"3.249\"},{\"volume\":\"4647056467\",\"high\":\"3.275\",\"low\":\"3.193\",\"rsi\":13.9393939,\"day\":\"20240122\",\"close\":\"3.206\",\"open\":\"3.265\"},{\"volume\":\"1392480372\",\"high\":\"3.247\",\"low\":\"3.186\",\"rsi\":26.2987013,\"day\":\"20240123\",\"close\":\"3.228\",\"open\":\"3.199\"},{\"volume\":\"2278936853\",\"high\":\"3.280\",\"low\":\"3.188\",\"rsi\":47.8510029,\"day\":\"20240124\",\"close\":\"3.279\",\"open\":\"3.239\"},{\"volume\":\"1648701409\",\"high\":\"3.340\",\"low\":\"3.261\",\"rsi\":62.755102,\"day\":\"20240125\",\"close\":\"3.335\",\"open\":\"3.270\"},{\"volume\":\"2183305124\",\"high\":\"3.350\",\"low\":\"3.312\",\"rsi\":60.4294479,\"day\":\"20240126\",\"close\":\"3.329\",\"open\":\"3.328\"},{\"volume\":\"1011393030\",\"high\":\"3.345\",\"low\":\"3.298\",\"rsi\":49.2211838,\"day\":\"20240129\",\"close\":\"3.299\",\"open\":\"3.331\"},{\"volume\":\"1889262338\",\"high\":\"3.298\",\"low\":\"3.241\",\"rsi\":34.2391304,\"day\":\"20240130\",\"close\":\"3.243\",\"open\":\"3.281\"},{\"volume\":\"1909099700\",\"high\":\"3.249\",\"low\":\"3.197\",\"rsi\":29.9703264,\"day\":\"20240131\",\"close\":\"3.222\",\"open\":\"3.233\"},{\"volume\":\"1890997581\",\"high\":\"3.248\",\"low\":\"3.190\",\"rsi\":29.1366906,\"day\":\"20240201\",\"close\":\"3.218\",\"open\":\"3.200\"},{\"volume\":\"2538694215\",\"high\":\"3.232\",\"low\":\"3.102\",\"rsi\":22.9681979,\"day\":\"20240202\",\"close\":\"3.188\",\"open\":\"3.218\"},{\"volume\":\"2660178739\",\"high\":\"3.234\",\"low\":\"3.111\",\"rsi\":34.5864662,\"day\":\"20240205\",\"close\":\"3.208\",\"open\":\"3.158\"},{\"volume\":\"2008918168\",\"high\":\"3.314\",\"low\":\"3.182\",\"rsi\":66.8257757,\"day\":\"20240206\",\"close\":\"3.311\",\"open\":\"3.185\"},{\"volume\":\"3465814670\",\"high\":\"3.342\",\"low\":\"3.287\",\"rsi\":71.7557252,\"day\":\"20240207\",\"close\":\"3.340\",\"open\":\"3.310\"},{\"volume\":\"2394261979\",\"high\":\"3.366\",\"low\":\"3.333\",\"rsi\":75.2089136,\"day\":\"20240208\",\"close\":\"3.362\",\"open\":\"3.352\"},{\"volume\":\"1486187642\",\"high\":\"3.392\",\"low\":\"3.355\",\"rsi\":79.1788856,\"day\":\"20240219\",\"close\":\"3.389\",\"open\":\"3.374\"},{\"volume\":\"980166818\",\"high\":\"3.405\",\"low\":\"3.372\",\"rsi\":80.8080808,\"day\":\"20240220\",\"close\":\"3.401\",\"open\":\"3.383\"},{\"volume\":\"1600958050\",\"high\":\"3.496\",\"low\":\"3.382\",\"rsi\":86.2275449,\"day\":\"20240221\",\"close\":\"3.449\",\"open\":\"3.388\"},{\"volume\":\"944635129\",\"high\":\"3.477\",\"low\":\"3.441\",\"rsi\":88.4012539,\"day\":\"20240222\",\"close\":\"3.475\",\"open\":\"3.447\"},{\"volume\":\"1090877384\",\"high\":\"3.497\",\"low\":\"3.464\",\"rsi\":88.5496183,\"day\":\"20240223\",\"close\":\"3.478\",\"open\":\"3.475\"},{\"volume\":\"1117236848\",\"high\":\"3.482\",\"low\":\"3.437\",\"rsi\":66.4285714,\"day\":\"20240226\",\"close\":\"3.443\",\"open\":\"3.476\"},{\"volume\":\"1046884914\",\"high\":\"3.486\",\"low\":\"3.433\",\"rsi\":75.4901961,\"day\":\"20240227\",\"close\":\"3.484\",\"open\":\"3.435\"},{\"volume\":\"2854997884\",\"high\":\"3.514\",\"low\":\"3.446\",\"rsi\":58.3596215,\"day\":\"20240228\",\"close\":\"3.448\",\"open\":\"3.487\"},{\"volume\":\"1483585030\",\"high\":\"3.507\",\"low\":\"3.437\",\"rsi\":70.8791209,\"day\":\"20240229\",\"close\":\"3.503\",\"open\":\"3.440\"},{\"volume\":\"1225639313\",\"high\":\"3.540\",\"low\":\"3.495\",\"rsi\":75.3623188,\"day\":\"20240301\",\"close\":\"3.530\",\"open\":\"3.501\"},{\"volume\":\"1014654993\",\"high\":\"3.537\",\"low\":\"3.508\",\"rsi\":73.7588652,\"day\":\"20240304\",\"close\":\"3.527\",\"open\":\"3.526\"},{\"volume\":\"2799101870\",\"high\":\"3.566\",\"low\":\"3.508\",\"rsi\":79.1519435,\"day\":\"20240305\",\"close\":\"3.556\",\"open\":\"3.515\"},{\"volume\":\"1299527425\",\"high\":\"3.572\",\"low\":\"3.538\",\"rsi\":70.4724409,\"day\":\"20240306\",\"close\":\"3.542\",\"open\":\"3.551\"},{\"volume\":\"1058948004\",\"high\":\"3.560\",\"low\":\"3.515\",\"rsi\":59.3360996,\"day\":\"20240307\",\"close\":\"3.523\",\"open\":\"3.541\"},{\"volume\":\"862187698\",\"high\":\"3.540\",\"low\":\"3.504\",\"rsi\":63.2075472,\"day\":\"20240308\",\"close\":\"3.533\",\"open\":\"3.525\"},{\"volume\":\"1120761515\",\"high\":\"3.584\",\"low\":\"3.530\",\"rsi\":76.6037736,\"day\":\"20240311\",\"close\":\"3.581\",\"open\":\"3.531\"},{\"volume\":\"1105839572\",\"high\":\"3.599\",\"low\":\"3.568\",\"rsi\":77.4774775,\"day\":\"20240312\",\"close\":\"3.586\",\"open\":\"3.583\"},{\"volume\":\"685870558\",\"high\":\"3.585\",\"low\":\"3.555\",\"rsi\":62.7272727,\"day\":\"20240313\",\"close\":\"3.565\",\"open\":\"3.585\"},{\"volume\":\"701881148\",\"high\":\"3.587\",\"low\":\"3.535\",\"rsi\":54.4554455,\"day\":\"20240314\",\"close\":\"3.552\",\"open\":\"3.560\"},{\"volume\":\"849023790\",\"high\":\"3.566\",\"low\":\"3.522\",\"rsi\":58.8888889,\"day\":\"20240315\",\"close\":\"3.561\",\"open\":\"3.542\"},{\"volume\":\"787332932\",\"high\":\"3.593\",\"low\":\"3.561\",\"rsi\":71.3592233,\"day\":\"20240318\",\"close\":\"3.592\",\"open\":\"3.561\"},{\"volume\":\"654875208\",\"high\":\"3.600\",\"low\":\"3.565\",\"rsi\":55.9241706,\"day\":\"20240319\",\"close\":\"3.569\",\"open\":\"3.586\"},{\"volume\":\"537962049\",\"high\":\"3.582\",\"low\":\"3.558\",\"rsi\":57.4712644,\"day\":\"20240320\",\"close\":\"3.572\",\"open\":\"3.561\"},{\"volume\":\"619733207\",\"high\":\"3.594\",\"low\":\"3.565\",\"rsi\":55.9440559,\"day\":\"20240321\",\"close\":\"3.570\",\"open\":\"3.580\"},{\"volume\":\"1450637754\",\"high\":\"3.568\",\"low\":\"3.512\",\"rsi\":36.3636364,\"day\":\"20240322\",\"close\":\"3.539\",\"open\":\"3.567\"},{\"volume\":\"630542664\",\"high\":\"3.555\",\"low\":\"3.517\",\"rsi\":28.4916201,\"day\":\"20240325\",\"close\":\"3.520\",\"open\":\"3.530\"},{\"volume\":\"879103283\",\"high\":\"3.538\",\"low\":\"3.512\",\"rsi\":38.1818182,\"day\":\"20240326\",\"close\":\"3.531\",\"open\":\"3.520\"},{\"volume\":\"874647452\",\"high\":\"3.532\",\"low\":\"3.492\",\"rsi\":24.0384615,\"day\":\"20240327\",\"close\":\"3.493\",\"open\":\"3.526\"},{\"volume\":\"1031925094\",\"high\":\"3.544\",\"low\":\"3.481\",\"rsi\":37.0,\"day\":\"20240328\",\"close\":\"3.510\",\"open\":\"3.491\"},{\"volume\":\"651195899\",\"high\":\"3.530\",\"low\":\"3.505\",\"rsi\":47.3958333,\"day\":\"20240329\",\"close\":\"3.526\",\"open\":\"3.507\"},{\"volume\":\"1093262535\",\"high\":\"3.594\",\"low\":\"3.539\",\"rsi\":70.0,\"day\":\"20240401\",\"close\":\"3.584\",\"open\":\"3.540\"},{\"volume\":\"583191382\",\"high\":\"3.587\",\"low\":\"3.561\",\"rsi\":62.9166667,\"day\":\"20240402\",\"close\":\"3.572\",\"open\":\"3.583\"},{\"volume\":\"598346410\",\"high\":\"3.572\",\"low\":\"3.548\",\"rsi\":55.0,\"day\":\"20240403\",\"close\":\"3.558\",\"open\":\"3.570\"},{\"volume\":\"709948668\",\"high\":\"3.556\",\"low\":\"3.524\",\"rsi\":41.4529915,\"day\":\"20240408\",\"close\":\"3.529\",\"open\":\"3.550\"},{\"volume\":\"534537135\",\"high\":\"3.534\",\"low\":\"3.512\",\"rsi\":39.0,\"day\":\"20240409\",\"close\":\"3.523\",\"open\":\"3.527\"},{\"volume\":\"681671142\",\"high\":\"3.524\",\"low\":\"3.480\",\"rsi\":29.245283,\"day\":\"20240410\",\"close\":\"3.497\",\"open\":\"3.524\"},{\"volume\":\"539115871\",\"high\":\"3.513\",\"low\":\"3.475\",\"rsi\":28.4090909,\"day\":\"20240411\",\"close\":\"3.494\",\"open\":\"3.481\"},{\"volume\":\"740512912\",\"high\":\"3.505\",\"low\":\"3.457\",\"rsi\":20.3045685,\"day\":\"20240412\",\"close\":\"3.466\",\"open\":\"3.494\"},{\"volume\":\"1099953730\",\"high\":\"3.545\",\"low\":\"3.464\",\"rsi\":58.5526316,\"day\":\"20240415\",\"close\":\"3.539\",\"open\":\"3.466\"},{\"volume\":\"913229847\",\"high\":\"3.535\",\"low\":\"3.491\",\"rsi\":46.2540717,\"day\":\"20240416\",\"close\":\"3.507\",\"open\":\"3.524\"},{\"volume\":\"996466434\",\"high\":\"3.557\",\"low\":\"3.491\",\"rsi\":60.9467456,\"day\":\"20240417\",\"close\":\"3.553\",\"open\":\"3.507\"},{\"volume\":\"930219267\",\"high\":\"3.594\",\"low\":\"3.541\",\"rsi\":62.5441696,\"day\":\"20240418\",\"close\":\"3.559\",\"open\":\"3.544\"},{\"volume\":\"644275741\",\"high\":\"3.554\",\"low\":\"3.518\",\"rsi\":50.1766784,\"day\":\"20240419\",\"close\":\"3.531\",\"open\":\"3.545\"},{\"volume\":\"725182362\",\"high\":\"3.552\",\"low\":\"3.518\",\"rsi\":47.3029046,\"day\":\"20240422\",\"close\":\"3.524\",\"open\":\"3.530\"},{\"volume\":\"942847430\",\"high\":\"3.530\",\"low\":\"3.493\",\"rsi\":37.4485597,\"day\":\"20240423\",\"close\":\"3.499\",\"open\":\"3.524\"},{\"volume\":\"594231908\",\"high\":\"3.517\",\"low\":\"3.489\",\"rsi\":45.2914798,\"day\":\"20240424\",\"close\":\"3.513\",\"open\":\"3.505\"},{\"volume\":\"664755214\",\"high\":\"3.537\",\"low\":\"3.495\",\"rsi\":50.7537688,\"day\":\"20240425\",\"close\":\"3.523\",\"open\":\"3.503\"},{\"volume\":\"1374313959\",\"high\":\"3.581\",\"low\":\"3.524\",\"rsi\":69.8841699,\"day\":\"20240426\",\"close\":\"3.573\",\"open\":\"3.524\"},{\"volume\":\"1530322426\",\"high\":\"3.638\",\"low\":\"3.572\",\"rsi\":78.8395904,\"day\":\"20240429\",\"close\":\"3.616\",\"open\":\"3.577\"},{\"volume\":\"823109014\",\"high\":\"3.624\",\"low\":\"3.596\",\"rsi\":68.2656827,\"day\":\"20240430\",\"close\":\"3.598\",\"open\":\"3.615\"},{\"volume\":\"1309061067\",\"high\":\"3.664\",\"low\":\"3.635\",\"rsi\":78.2334385,\"day\":\"20240506\",\"close\":\"3.648\",\"open\":\"3.640\"},{\"volume\":\"686018359\",\"high\":\"3.656\",\"low\":\"3.637\",\"rsi\":78.5992218,\"day\":\"20240507\",\"close\":\"3.650\",\"open\":\"3.645\"},{\"volume\":\"638775858\",\"high\":\"3.644\",\"low\":\"3.618\",\"rsi\":61.3636364,\"day\":\"20240508\",\"close\":\"3.621\",\"open\":\"3.643\"},{\"volume\":\"650202324\",\"high\":\"3.662\",\"low\":\"3.619\",\"rsi\":70.9219858,\"day\":\"20240509\",\"close\":\"3.656\",\"open\":\"3.620\"},{\"volume\":\"865095400\",\"high\":\"3.670\",\"low\":\"3.631\",\"rsi\":71.3043478,\"day\":\"20240510\",\"close\":\"3.658\",\"open\":\"3.663\"},{\"volume\":\"741159442\",\"high\":\"3.666\",\"low\":\"3.619\",\"rsi\":68.9473684,\"day\":\"20240513\",\"close\":\"3.655\",\"open\":\"3.637\"},{\"volume\":\"587666800\",\"high\":\"3.670\",\"low\":\"3.638\",\"rsi\":64.0243902,\"day\":\"20240514\",\"close\":\"3.649\",\"open\":\"3.655\"},{\"volume\":\"855946284\",\"high\":\"3.651\",\"low\":\"3.617\",\"rsi\":45.9016393,\"day\":\"20240515\",\"close\":\"3.623\",\"open\":\"3.647\"},{\"volume\":\"1051197527\",\"high\":\"3.651\",\"low\":\"3.621\",\"rsi\":53.5294118,\"day\":\"20240516\",\"close\":\"3.635\",\"open\":\"3.630\"},{\"volume\":\"932046931\",\"high\":\"3.679\",\"low\":\"3.623\",\"rsi\":71.1009174,\"day\":\"20240517\",\"close\":\"3.676\",\"open\":\"3.635\"},{\"volume\":\"936535896\",\"high\":\"3.700\",\"low\":\"3.670\",\"rsi\":73.6842105,\"day\":\"20240520\",\"close\":\"3.684\",\"open\":\"3.682\"},{\"volume\":\"496983882\",\"high\":\"3.683\",\"low\":\"3.660\",\"rsi\":63.6363636,\"day\":\"20240521\",\"close\":\"3.672\",\"open\":\"3.679\"},{\"volume\":\"676684556\",\"high\":\"3.689\",\"low\":\"3.663\",\"rsi\":67.5159236,\"day\":\"20240522\",\"close\":\"3.680\",\"open\":\"3.670\"},{\"volume\":\"698806053\",\"high\":\"3.674\",\"low\":\"3.631\",\"rsi\":42.5,\"day\":\"20240523\",\"close\":\"3.643\",\"open\":\"3.671\"},{\"volume\":\"841274200\",\"high\":\"3.650\",\"low\":\"3.598\",\"rsi\":28.0991736,\"day\":\"20240524\",\"close\":\"3.602\",\"open\":\"3.632\"},{\"volume\":\"669622487\",\"high\":\"3.634\",\"low\":\"3.601\",\"rsi\":45.0592885,\"day\":\"20240527\",\"close\":\"3.632\",\"open\":\"3.605\"},{\"volume\":\"531753198\",\"high\":\"3.633\",\"low\":\"3.602\",\"rsi\":36.6935484,\"day\":\"20240528\",\"close\":\"3.609\",\"open\":\"3.631\"},{\"volume\":\"615245082\",\"high\":\"3.633\",\"low\":\"3.601\",\"rsi\":37.3134328,\"day\":\"20240529\",\"close\":\"3.610\",\"open\":\"3.608\"},{\"volume\":\"777925303\",\"high\":\"3.625\",\"low\":\"3.588\",\"rsi\":31.7460317,\"day\":\"20240530\",\"close\":\"3.596\",\"open\":\"3.603\"},{\"volume\":\"723218340\",\"high\":\"3.616\",\"low\":\"3.580\",\"rsi\":26.8156425,\"day\":\"20240531\",\"close\":\"3.582\",\"open\":\"3.602\"},{\"volume\":\"707511590\",\"high\":\"3.599\",\"low\":\"3.565\",\"rsi\":31.372549,\"day\":\"20240603\",\"close\":\"3.587\",\"open\":\"3.580\"},{\"volume\":\"681737902\",\"high\":\"3.624\",\"low\":\"3.579\",\"rsi\":51.1627907,\"day\":\"20240604\",\"close\":\"3.612\",\"open\":\"3.585\"},{\"volume\":\"583939433\",\"high\":\"3.622\",\"low\":\"3.597\",\"rsi\":42.9447853,\"day\":\"20240605\",\"close\":\"3.599\",\"open\":\"3.613\"},{\"volume\":\"1026699323\",\"high\":\"3.630\",\"low\":\"3.585\",\"rsi\":43.0769231,\"day\":\"20240606\",\"close\":\"3.599\",\"open\":\"3.606\"},{\"volume\":\"1028127109\",\"high\":\"3.610\",\"low\":\"3.555\",\"rsi\":30.0,\"day\":\"20240607\",\"close\":\"3.576\",\"open\":\"3.602\"},{\"volume\":\"879916985\",\"high\":\"3.569\",\"low\":\"3.533\",\"rsi\":21.1764706,\"day\":\"20240611\",\"close\":\"3.551\",\"open\":\"3.567\"},{\"volume\":\"569835311\",\"high\":\"3.556\",\"low\":\"3.536\",\"rsi\":20.1388889,\"day\":\"20240612\",\"close\":\"3.547\",\"open\":\"3.544\"},{\"volume\":\"548803711\",\"high\":\"3.558\",\"low\":\"3.525\",\"rsi\":16.3120567,\"day\":\"20240613\",\"close\":\"3.534\",\"open\":\"3.555\"},{\"volume\":\"674103954\",\"high\":\"3.558\",\"low\":\"3.517\",\"rsi\":38.1578947,\"day\":\"20240614\",\"close\":\"3.554\",\"open\":\"3.527\"},{\"volume\":\"393017195\",\"high\":\"3.553\",\"low\":\"3.532\",\"rsi\":32.6241135,\"day\":\"20240617\",\"close\":\"3.544\",\"open\":\"3.537\"},{\"volume\":\"549035200\",\"high\":\"3.565\",\"low\":\"3.543\",\"rsi\":43.7037037,\"day\":\"20240618\",\"close\":\"3.555\",\"open\":\"3.549\"},{\"volume\":\"530859528\",\"high\":\"3.561\",\"low\":\"3.540\",\"rsi\":36.71875,\"day\":\"20240619\",\"close\":\"3.545\",\"open\":\"3.557\"},{\"volume\":\"554655780\",\"high\":\"3.551\",\"low\":\"3.516\",\"rsi\":25.5033557,\"day\":\"20240620\",\"close\":\"3.522\",\"open\":\"3.543\"},{\"volume\":\"1965867737\",\"high\":\"3.525\",\"low\":\"3.493\",\"rsi\":22.9007634,\"day\":\"20240621\",\"close\":\"3.516\",\"open\":\"3.517\"},{\"volume\":\"2087545529\",\"high\":\"3.526\",\"low\":\"3.493\",\"rsi\":17.2661871,\"day\":\"20240624\",\"close\":\"3.499\",\"open\":\"3.502\"},{\"volume\":\"1738458468\",\"high\":\"3.504\",\"low\":\"3.459\",\"rsi\":12.4183007,\"day\":\"20240625\",\"close\":\"3.478\",\"open\":\"3.495\"},{\"volume\":\"1045489522\",\"high\":\"3.507\",\"low\":\"3.464\",\"rsi\":34.7560976,\"day\":\"20240626\",\"close\":\"3.499\",\"open\":\"3.470\"},{\"volume\":\"1433704942\",\"high\":\"3.496\",\"low\":\"3.474\",\"rsi\":27.0588235,\"day\":\"20240627\",\"close\":\"3.480\",\"open\":\"3.490\"},{\"volume\":\"1275543418\",\"high\":\"3.511\",\"low\":\"3.473\",\"rsi\":34.0,\"day\":\"20240628\",\"close\":\"3.487\",\"open\":\"3.474\"},{\"volume\":\"853604020\",\"high\":\"3.507\",\"low\":\"3.467\",\"rsi\":46.6216216,\"day\":\"20240701\",\"close\":\"3.501\",\"open\":\"3.487\"},{\"volume\":\"599204907\",\"high\":\"3.511\",\"low\":\"3.489\",\"rsi\":42.96875,\"day\":\"20240702\",\"close\":\"3.496\",\"open\":\"3.494\"},{\"volume\":\"791424029\",\"high\":\"3.503\",\"low\":\"3.480\",\"rsi\":38.5964912,\"day\":\"20240703\",\"close\":\"3.490\",\"open\":\"3.494\"},{\"volume\":\"1559923712\",\"high\":\"3.509\",\"low\":\"3.473\",\"rsi\":28.9256198,\"day\":\"20240704\",\"close\":\"3.475\",\"open\":\"3.493\"},{\"volume\":\"1636384501\",\"high\":\"3.478\",\"low\":\"3.428\",\"rsi\":21.3740458,\"day\":\"20240705\",\"close\":\"3.458\",\"open\":\"3.470\"},{\"volume\":\"942625516\",\"high\":\"3.458\",\"low\":\"3.426\",\"rsi\":14.4736842,\"day\":\"20240708\",\"close\":\"3.434\",\"open\":\"3.451\"},{\"volume\":\"1068895639\",\"high\":\"3.484\",\"low\":\"3.418\",\"rsi\":46.9387755,\"day\":\"20240709\",\"close\":\"3.471\",\"open\":\"3.429\"},{\"volume\":\"579282100\",\"high\":\"3.482\",\"low\":\"3.460\",\"rsi\":42.7745665,\"day\":\"20240710\",\"close\":\"3.463\",\"open\":\"3.464\"},{\"volume\":\"1052437774\",\"high\":\"3.519\",\"low\":\"3.477\",\"rsi\":65.6521739,\"day\":\"20240711\",\"close\":\"3.509\",\"open\":\"3.490\"},{\"volume\":\"872369380\",\"high\":\"3.524\",\"low\":\"3.505\",\"rsi\":69.1176471,\"day\":\"20240712\",\"close\":\"3.519\",\"open\":\"3.511\"},{\"volume\":\"1255008224\",\"high\":\"3.531\",\"low\":\"3.508\",\"rsi\":71.7514124,\"day\":\"20240715\",\"close\":\"3.526\",\"open\":\"3.511\"},{\"volume\":\"1612508698\",\"high\":\"3.555\",\"low\":\"3.517\",\"rsi\":79.1666667,\"day\":\"20240716\",\"close\":\"3.551\",\"open\":\"3.520\"},{\"volume\":\"2256564400\",\"high\":\"3.570\",\"low\":\"3.540\",\"rsi\":80.4878049,\"day\":\"20240717\",\"close\":\"3.556\",\"open\":\"3.549\"},{\"volume\":\"1961181500\",\"high\":\"3.579\",\"low\":\"3.532\",\"rsi\":85.0574713,\"day\":\"20240718\",\"close\":\"3.577\",\"open\":\"3.541\"},{\"volume\":\"3169662602\",\"high\":\"3.606\",\"low\":\"3.552\",\"rsi\":88.6486486,\"day\":\"20240719\",\"close\":\"3.600\",\"open\":\"3.565\"},{\"volume\":\"1716307285\",\"high\":\"3.598\",\"low\":\"3.551\",\"rsi\":63.592233,\"day\":\"20240722\",\"close\":\"3.571\",\"open\":\"3.595\"},{\"volume\":\"919533700\",\"high\":\"3.571\",\"low\":\"3.498\",\"rsi\":34.4262295,\"day\":\"20240723\",\"close\":\"3.501\",\"open\":\"3.566\"},{\"volume\":\"1491083494\",\"high\":\"3.509\",\"low\":\"3.466\",\"rsi\":29.1666667,\"day\":\"20240724\",\"close\":\"3.479\",\"open\":\"3.495\"},{\"volume\":\"2045552535\",\"high\":\"3.476\",\"low\":\"3.441\",\"rsi\":24.8148148,\"day\":\"20240725\",\"close\":\"3.459\",\"open\":\"3.464\"},{\"volume\":\"1357970329\",\"high\":\"3.483\",\"low\":\"3.452\",\"rsi\":34.1463415,\"day\":\"20240726\",\"close\":\"3.474\",\"open\":\"3.460\"},{\"volume\":\"594937600\",\"high\":\"3.472\",\"low\":\"3.453\",\"rsi\":28.2700422,\"day\":\"20240729\",\"close\":\"3.454\",\"open\":\"3.470\"},{\"volume\":\"1525086114\",\"high\":\"3.446\",\"low\":\"3.417\",\"rsi\":22.8813559,\"day\":\"20240730\",\"close\":\"3.431\",\"open\":\"3.446\"},{\"volume\":\"1538908320\",\"high\":\"3.510\",\"low\":\"3.427\",\"rsi\":57.4344023,\"day\":\"20240731\",\"close\":\"3.508\",\"open\":\"3.431\"},{\"volume\":\"796540400\",\"high\":\"3.515\",\"low\":\"3.481\",\"rsi\":48.6153846,\"day\":\"20240801\",\"close\":\"3.483\",\"open\":\"3.502\"},{\"volume\":\"1299773300\",\"high\":\"3.483\",\"low\":\"3.441\",\"rsi\":37.9518072,\"day\":\"20240802\",\"close\":\"3.447\",\"open\":\"3.460\"},{\"volume\":\"2018310938\",\"high\":\"3.474\",\"low\":\"3.407\",\"rsi\":29.3604651,\"day\":\"20240805\",\"close\":\"3.408\",\"open\":\"3.431\"},{\"volume\":\"1293627530\",\"high\":\"3.438\",\"low\":\"3.381\",\"rsi\":29.4545455,\"day\":\"20240806\",\"close\":\"3.408\",\"open\":\"3.428\"},{\"volume\":\"612543796\",\"high\":\"3.425\",\"low\":\"3.391\",\"rsi\":27.7777778,\"day\":\"20240807\",\"close\":\"3.401\",\"open\":\"3.401\"},{\"volume\":\"854107231\",\"high\":\"3.429\",\"low\":\"3.383\",\"rsi\":30.7692308,\"day\":\"20240808\",\"close\":\"3.405\",\"open\":\"3.396\"},{\"volume\":\"604053582\",\"high\":\"3.430\",\"low\":\"3.392\",\"rsi\":26.6666667,\"day\":\"20240809\",\"close\":\"3.393\",\"open\":\"3.416\"},{\"volume\":\"510219975\",\"high\":\"3.402\",\"low\":\"3.383\",\"rsi\":25.0,\"day\":\"20240812\",\"close\":\"3.389\",\"open\":\"3.391\"},{\"volume\":\"695806300\",\"high\":\"3.398\",\"low\":\"3.372\",\"rsi\":30.5343511,\"day\":\"20240813\",\"close\":\"3.394\",\"open\":\"3.391\"},{\"volume\":\"561099800\",\"high\":\"3.395\",\"low\":\"3.369\",\"rsi\":20.9150327,\"day\":\"20240814\",\"close\":\"3.370\",\"open\":\"3.395\"},{\"volume\":\"1904638108\",\"high\":\"3.423\",\"low\":\"3.361\",\"rsi\":51.2562814,\"day\":\"20240815\",\"close\":\"3.408\",\"open\":\"3.365\"},{\"volume\":\"1640761708\",\"high\":\"3.422\",\"low\":\"3.398\",\"rsi\":52.4390244,\"day\":\"20240816\",\"close\":\"3.410\",\"open\":\"3.404\"},{\"volume\":\"747825318\",\"high\":\"3.444\",\"low\":\"3.407\",\"rsi\":58.3892617,\"day\":\"20240819\",\"close\":\"3.419\",\"open\":\"3.409\"},{\"volume\":\"1594474848\",\"high\":\"3.426\",\"low\":\"3.388\",\"rsi\":46.0526316,\"day\":\"20240820\",\"close\":\"3.403\",\"open\":\"3.424\"},{\"volume\":\"1055369805\",\"high\":\"3.406\",\"low\":\"3.374\",\"rsi\":36.8421053,\"day\":\"20240821\",\"close\":\"3.388\",\"open\":\"3.391\"},{\"volume\":\"1250479415\",\"high\":\"3.395\",\"low\":\"3.371\",\"rsi\":32.1428571,\"day\":\"20240822\",\"close\":\"3.379\",\"open\":\"3.390\"},{\"volume\":\"820342800\",\"high\":\"3.405\",\"low\":\"3.371\",\"rsi\":45.7142857,\"day\":\"20240823\",\"close\":\"3.393\",\"open\":\"3.371\"},{\"volume\":\"1400679914\",\"high\":\"3.407\",\"low\":\"3.378\",\"rsi\":46.4912281,\"day\":\"20240826\",\"close\":\"3.394\",\"open\":\"3.395\"},{\"volume\":\"1214220097\",\"high\":\"3.390\",\"low\":\"3.367\",\"rsi\":33.6,\"day\":\"20240827\",\"close\":\"3.377\",\"open\":\"3.387\"},{\"volume\":\"1995580276\",\"high\":\"3.377\",\"low\":\"3.345\",\"rsi\":24.2857143,\"day\":\"20240828\",\"close\":\"3.357\",\"open\":\"3.370\"},{\"volume\":\"1508247743\",\"high\":\"3.362\",\"low\":\"3.340\",\"rsi\":20.4545455,\"day\":\"20240829\",\"close\":\"3.347\",\"open\":\"3.349\"},{\"volume\":\"1785899811\",\"high\":\"3.423\",\"low\":\"3.342\",\"rsi\":57.1428571,\"day\":\"20240830\",\"close\":\"3.392\",\"open\":\"3.342\"},{\"volume\":\"1133306500\",\"high\":\"3.383\",\"low\":\"3.330\",\"rsi\":32.4909747,\"day\":\"20240902\",\"close\":\"3.332\",\"open\":\"3.381\"},{\"volume\":\"1293552308\",\"high\":\"3.352\",\"low\":\"3.328\",\"rsi\":39.0243902,\"day\":\"20240903\",\"close\":\"3.344\",\"open\":\"3.330\"},{\"volume\":\"680305800\",\"high\":\"3.343\",\"low\":\"3.321\",\"rsi\":32.2175732,\"day\":\"20240904\",\"close\":\"3.323\",\"open\":\"3.331\"},{\"volume\":\"1600555757\",\"high\":\"3.340\",\"low\":\"3.320\",\"rsi\":36.8932039,\"day\":\"20240905\",\"close\":\"3.330\",\"open\":\"3.326\"},{\"volume\":\"793315700\",\"high\":\"3.345\",\"low\":\"3.300\",\"rsi\":27.60181,\"day\":\"20240906\",\"close\":\"3.302\",\"open\":\"3.335\"},{\"volume\":\"1018897104\",\"high\":\"3.296\",\"low\":\"3.250\",\"rsi\":18.9189189,\"day\":\"20240909\",\"close\":\"3.261\",\"open\":\"3.292\"},{\"volume\":\"866655438\",\"high\":\"3.275\",\"low\":\"3.239\",\"rsi\":18.8405797,\"day\":\"20240910\",\"close\":\"3.261\",\"open\":\"3.263\"},{\"volume\":\"780890193\",\"high\":\"3.267\",\"low\":\"3.241\",\"rsi\":17.3184358,\"day\":\"20240911\",\"close\":\"3.254\",\"open\":\"3.253\"},{\"volume\":\"642379317\",\"high\":\"3.272\",\"low\":\"3.241\",\"rsi\":15.1515152,\"day\":\"20240912\",\"close\":\"3.243\",\"open\":\"3.259\"},{\"volume\":\"850468092\",\"high\":\"3.257\",\"low\":\"3.227\",\"rsi\":12.345679,\"day\":\"20240913\",\"close\":\"3.228\",\"open\":\"3.245\"},{\"volume\":\"1225439069\",\"high\":\"3.251\",\"low\":\"3.215\",\"rsi\":24.0,\"day\":\"20240918\",\"close\":\"3.238\",\"open\":\"3.227\"},{\"volume\":\"1634887021\",\"high\":\"3.286\",\"low\":\"3.216\",\"rsi\":47.7011494,\"day\":\"20240919\",\"close\":\"3.265\",\"open\":\"3.243\"},{\"volume\":\"2306561983\",\"high\":\"3.279\",\"low\":\"3.239\",\"rsi\":53.5031847,\"day\":\"20240920\",\"close\":\"3.274\",\"open\":\"3.258\"},{\"volume\":\"897316534\",\"high\":\"3.300\",\"low\":\"3.263\",\"rsi\":59.4405594,\"day\":\"20240923\",\"close\":\"3.283\",\"open\":\"3.269\"},{\"volume\":\"3918516217\",\"high\":\"3.429\",\"low\":\"3.293\",\"rsi\":88.5572139,\"day\":\"20240924\",\"close\":\"3.427\",\"open\":\"3.314\"},{\"volume\":\"3237346937\",\"high\":\"3.544\",\"low\":\"3.467\",\"rsi\":91.1057692,\"day\":\"20240925\",\"close\":\"3.474\",\"open\":\"3.489\"},{\"volume\":\"4442962141\",\"high\":\"3.643\",\"low\":\"3.467\",\"rsi\":95.4887218,\"day\":\"20240926\",\"close\":\"3.640\",\"open\":\"3.468\"},{\"volume\":\"2559461161\",\"high\":\"3.933\",\"low\":\"3.670\",\"rsi\":97.5757576,\"day\":\"20240927\",\"close\":\"3.869\",\"open\":\"3.700\"},{\"volume\":\"6370234083\",\"high\":\"4.240\",\"low\":\"3.876\",\"rsi\":98.75,\"day\":\"20240930\",\"close\":\"4.233\",\"open\":\"4.007\"},{\"volume\":\"8629822438\",\"high\":\"4.656\",\"low\":\"4.208\",\"rsi\":99.047014,\"day\":\"20241008\",\"close\":\"4.412\",\"open\":\"4.656\"},{\"volume\":\"5409196572\",\"high\":\"4.285\",\"low\":\"4.005\",\"rsi\":61.1574301,\"day\":\"20241009\",\"close\":\"4.022\",\"open\":\"4.285\"},{\"volume\":\"3779000075\",\"high\":\"4.185\",\"low\":\"3.999\",\"rsi\":63.9772727,\"day\":\"20241010\",\"close\":\"4.086\",\"open\":\"4.070\"},{\"volume\":\"4090077741\",\"high\":\"4.060\",\"low\":\"3.923\",\"rsi\":55.4120541,\"day\":\"20241011\",\"close\":\"3.977\",\"open\":\"4.057\"},{\"volume\":\"3104931745\",\"high\":\"4.060\",\"low\":\"3.946\",\"rsi\":59.3552908,\"day\":\"20241014\",\"close\":\"4.040\",\"open\":\"3.987\"},{\"volume\":\"2613870743\",\"high\":\"4.046\",\"low\":\"3.927\",\"rsi\":49.8529412,\"day\":\"20241015\",\"close\":\"3.931\",\"open\":\"4.014\"},{\"volume\":\"2161119628\",\"high\":\"3.960\",\"low\":\"3.882\",\"rsi\":47.6274165,\"day\":\"20241016\",\"close\":\"3.906\",\"open\":\"3.891\"},{\"volume\":\"2935435621\",\"high\":\"3.960\",\"low\":\"3.862\",\"rsi\":43.5305918,\"day\":\"20241017\",\"close\":\"3.863\",\"open\":\"3.930\"},{\"volume\":\"3620917893\",\"high\":\"4.118\",\"low\":\"3.846\",\"rsi\":59.2021759,\"day\":\"20241018\",\"close\":\"4.016\",\"open\":\"3.858\"},{\"volume\":\"2529336395\",\"high\":\"4.060\",\"low\":\"3.980\",\"rsi\":59.1836735,\"day\":\"20241021\",\"close\":\"4.016\",\"open\":\"4.017\"},{\"volume\":\"1666924499\",\"high\":\"4.046\",\"low\":\"4.001\",\"rsi\":61.8037135,\"day\":\"20241022\",\"close\":\"4.040\",\"open\":\"4.002\"},{\"volume\":\"2266629209\",\"high\":\"4.097\",\"low\":\"4.021\",\"rsi\":63.6650869,\"day\":\"20241023\",\"close\":\"4.055\",\"open\":\"4.040\"},{\"volume\":\"1598248721\",\"high\":\"4.042\",\"low\":\"3.993\",\"rsi\":54.2087542,\"day\":\"20241024\",\"close\":\"4.011\",\"open\":\"4.038\"},{\"volume\":\"1685265820\",\"high\":\"4.078\",\"low\":\"4.003\",\"rsi\":59.17603,\"day\":\"20241025\",\"close\":\"4.040\",\"open\":\"4.012\"},{\"volume\":\"1396308141\",\"high\":\"4.047\",\"low\":\"4.000\",\"rsi\":60.3644647,\"day\":\"20241028\",\"close\":\"4.046\",\"open\":\"4.035\"},{\"volume\":\"1794628159\",\"high\":\"4.079\",\"low\":\"4.003\",\"rsi\":50.8393285,\"day\":\"20241029\",\"close\":\"4.013\",\"open\":\"4.050\"},{\"volume\":\"1812859109\",\"high\":\"4.011\",\"low\":\"3.945\",\"rsi\":40.6698565,\"day\":\"20241030\",\"close\":\"3.971\",\"open\":\"4.001\"},{\"volume\":\"1763649256\",\"high\":\"4.007\",\"low\":\"3.938\",\"rsi\":40.7185629,\"day\":\"20241031\",\"close\":\"3.971\",\"open\":\"3.969\"},{\"volume\":\"1817756019\",\"high\":\"4.018\",\"low\":\"3.961\",\"rsi\":44.1696113,\"day\":\"20241101\",\"close\":\"3.979\",\"open\":\"3.964\"},{\"volume\":\"1249314386\",\"high\":\"4.034\",\"low\":\"3.971\",\"rsi\":62.0481928,\"day\":\"20241104\",\"close\":\"4.032\",\"open\":\"3.982\"},{\"volume\":\"2763014444\",\"high\":\"4.139\",\"low\":\"4.010\",\"rsi\":78.7815126,\"day\":\"20241105\",\"close\":\"4.137\",\"open\":\"4.024\"},{\"volume\":\"2173424760\",\"high\":\"4.180\",\"low\":\"4.085\",\"rsi\":69.2840647,\"day\":\"20241106\",\"close\":\"4.111\",\"open\":\"4.137\"},{\"volume\":\"2788718924\",\"high\":\"4.250\",\"low\":\"4.076\",\"rsi\":82.9032258,\"day\":\"20241107\",\"close\":\"4.248\",\"open\":\"4.080\"},{\"volume\":\"2808023160\",\"high\":\"4.290\",\"low\":\"4.178\",\"rsi\":68.0463576,\"day\":\"20241108\",\"close\":\"4.194\",\"open\":\"4.282\"},{\"volume\":\"2304365136\",\"high\":\"4.219\",\"low\":\"4.130\",\"rsi\":70.6666667,\"day\":\"20241111\",\"close\":\"4.215\",\"open\":\"4.152\"},{\"volume\":\"2304166776\",\"high\":\"4.268\",\"low\":\"4.145\",\"rsi\":58.0078125,\"day\":\"20241112\",\"close\":\"4.169\",\"open\":\"4.210\"},{\"volume\":\"1572794347\",\"high\":\"4.206\",\"low\":\"4.146\",\"rsi\":62.7705628,\"day\":\"20241113\",\"close\":\"4.195\",\"open\":\"4.150\"},{\"volume\":\"1443885260\",\"high\":\"4.203\",\"low\":\"4.117\",\"rsi\":45.3125,\"day\":\"20241114\",\"close\":\"4.124\",\"open\":\"4.188\"},{\"volume\":\"1676993542\",\"high\":\"4.134\",\"low\":\"4.050\",\"rsi\":33.9416058,\"day\":\"20241115\",\"close\":\"4.055\",\"open\":\"4.114\"},{\"volume\":\"1610092584\",\"high\":\"4.118\",\"low\":\"4.013\",\"rsi\":31.5010571,\"day\":\"20241118\",\"close\":\"4.038\",\"open\":\"4.071\"},{\"volume\":\"1670544920\",\"high\":\"4.061\",\"low\":\"3.981\",\"rsi\":38.0382775,\"day\":\"20241119\",\"close\":\"4.058\",\"open\":\"4.040\"},{\"volume\":\"1548530434\",\"high\":\"4.085\",\"low\":\"4.038\",\"rsi\":41.5254237,\"day\":\"20241120\",\"close\":\"4.068\",\"open\":\"4.046\"},{\"volume\":\"1045470681\",\"high\":\"4.082\",\"low\":\"4.048\",\"rsi\":43.537415,\"day\":\"20241121\",\"close\":\"4.073\",\"open\":\"4.060\"},{\"volume\":\"1757191250\",\"high\":\"4.074\",\"low\":\"3.946\",\"rsi\":21.4736842,\"day\":\"20241122\",\"close\":\"3.953\",\"open\":\"4.071\"},{\"volume\":\"1359085769\",\"high\":\"3.972\",\"low\":\"3.894\",\"rsi\":19.3396226,\"day\":\"20241125\",\"close\":\"3.931\",\"open\":\"3.955\"},{\"volume\":\"784707886\",\"high\":\"3.956\",\"low\":\"3.913\",\"rsi\":18.5393258,\"day\":\"20241126\",\"close\":\"3.923\",\"open\":\"3.914\"},{\"volume\":\"1451987366\",\"high\":\"3.992\",\"low\":\"3.901\",\"rsi\":43.8256659,\"day\":\"20241127\",\"close\":\"3.987\",\"open\":\"3.916\"},{\"volume\":\"1072407289\",\"high\":\"3.989\",\"low\":\"3.948\",\"rsi\":37.2750643,\"day\":\"20241128\",\"close\":\"3.958\",\"open\":\"3.984\"},{\"volume\":\"1529771604\",\"high\":\"4.047\",\"low\":\"3.957\",\"rsi\":50.8816121,\"day\":\"20241129\",\"close\":\"4.001\",\"open\":\"3.960\"},{\"volume\":\"981634781\",\"high\":\"4.043\",\"low\":\"3.987\",\"rsi\":58.7301587,\"day\":\"20241202\",\"close\":\"4.031\",\"open\":\"3.997\"},{\"volume\":\"1524423707\",\"high\":\"4.052\",\"low\":\"4.005\",\"rsi\":59.807074,\"day\":\"20241203\",\"close\":\"4.035\",\"open\":\"4.030\"},{\"volume\":\"1006947918\",\"high\":\"4.041\",\"low\":\"4.003\",\"rsi\":51.2027491,\"day\":\"20241204\",\"close\":\"4.014\",\"open\":\"4.030\"},{\"volume\":\"759522918\",\"high\":\"4.022\",\"low\":\"3.994\",\"rsi\":48.1781377,\"day\":\"20241205\",\"close\":\"4.007\",\"open\":\"4.006\"},{\"volume\":\"1776229382\",\"high\":\"4.085\",\"low\":\"4.006\",\"rsi\":65.6565657,\"day\":\"20241206\",\"close\":\"4.057\",\"open\":\"4.007\"},{\"volume\":\"1246418685\",\"high\":\"4.080\",\"low\":\"4.030\",\"rsi\":63.9344262,\"day\":\"20241209\",\"close\":\"4.054\",\"open\":\"4.054\"},{\"volume\":\"2482795311\",\"high\":\"4.198\",\"low\":\"4.073\",\"rsi\":72.7626459,\"day\":\"20241210\",\"close\":\"4.085\",\"open\":\"4.179\"},{\"volume\":\"1258715973\",\"high\":\"4.094\",\"low\":\"4.065\",\"rsi\":66.3716814,\"day\":\"20241211\",\"close\":\"4.075\",\"open\":\"4.078\"},{\"volume\":\"1360180433\",\"high\":\"4.122\",\"low\":\"4.066\",\"rsi\":76.9811321,\"day\":\"20241212\",\"close\":\"4.117\",\"open\":\"4.077\"},{\"volume\":\"2346569729\",\"high\":\"4.092\",\"low\":\"4.012\",\"rsi\":40.1477833,\"day\":\"20241213\",\"close\":\"4.020\",\"open\":\"4.092\"},{\"volume\":\"989323074\",\"high\":\"4.021\",\"low\":\"3.986\",\"rsi\":34.9462366,\"day\":\"20241216\",\"close\":\"3.996\",\"open\":\"4.018\"},{\"volume\":\"1364669228\",\"high\":\"4.043\",\"low\":\"3.991\",\"rsi\":39.375,\"day\":\"20241217\",\"close\":\"4.007\",\"open\":\"3.993\"},{\"volume\":\"1023609617\",\"high\":\"4.039\",\"low\":\"4.015\",\"rsi\":46.5517241,\"day\":\"20241218\",\"close\":\"4.024\",\"open\":\"4.020\"},{\"volume\":\"990362211\",\"high\":\"4.038\",\"low\":\"3.981\",\"rsi\":49.1803279,\"day\":\"20241219\",\"close\":\"4.030\",\"open\":\"4.000\"},{\"volume\":\"1223061986\",\"high\":\"4.045\",\"low\":\"4.012\",\"rsi\":43.8356164,\"day\":\"20241220\",\"close\":\"4.018\",\"open\":\"4.024\"},{\"volume\":\"1424702200\",\"high\":\"4.053\",\"low\":\"4.015\",\"rsi\":46.4480874,\"day\":\"20241223\",\"close\":\"4.022\",\"open\":\"4.017\"},{\"volume\":\"1456343427\",\"high\":\"4.076\",\"low\":\"4.022\",\"rsi\":67.5,\"day\":\"20241224\",\"close\":\"4.069\",\"open\":\"4.024\"},{\"volume\":\"1418137500\",\"high\":\"4.094\",\"low\":\"4.054\",\"rsi\":68.6868687,\"day\":\"20241225\",\"close\":\"4.072\",\"open\":\"4.072\"},{\"volume\":\"947023402\",\"high\":\"4.079\",\"low\":\"4.056\",\"rsi\":68.9440994,\"day\":\"20241226\",\"close\":\"4.073\",\"open\":\"4.072\"},{\"volume\":\"1086963910\",\"high\":\"4.099\",\"low\":\"4.061\",\"rsi\":63.1205674,\"day\":\"20241227\",\"close\":\"4.067\",\"open\":\"4.076\"},{\"volume\":\"1311933462\",\"high\":\"4.093\",\"low\":\"4.065\",\"rsi\":72.1854305,\"day\":\"20241230\",\"close\":\"4.086\",\"open\":\"4.066\"},{\"volume\":\"1843618788\",\"high\":\"4.094\",\"low\":\"4.020\",\"rsi\":34.939759,\"day\":\"20241231\",\"close\":\"4.022\",\"open\":\"4.087\"},{\"volume\":\"2172980338\",\"high\":\"4.021\",\"low\":\"3.881\",\"rsi\":16.4319249,\"day\":\"20250102\",\"close\":\"3.909\",\"open\":\"4.020\"},{\"volume\":\"1593022599\",\"high\":\"3.921\",\"low\":\"3.853\",\"rsi\":13.3016627,\"day\":\"20250103\",\"close\":\"3.869\",\"open\":\"3.909\"},{\"volume\":\"1298673930\",\"high\":\"3.873\",\"low\":\"3.828\",\"rsi\":12.195122,\"day\":\"20250106\",\"close\":\"3.853\",\"open\":\"3.865\"},{\"volume\":\"968974000\",\"high\":\"3.882\",\"low\":\"3.836\",\"rsi\":25.7879656,\"day\":\"20250107\",\"close\":\"3.880\",\"open\":\"3.845\"},{\"volume\":\"1409796811\",\"high\":\"3.899\",\"low\":\"3.815\",\"rsi\":24.742268,\"day\":\"20250108\",\"close\":\"3.874\",\"open\":\"3.870\"},{\"volume\":\"806065805\",\"high\":\"3.880\",\"low\":\"3.857\",\"rsi\":23.2931727,\"day\":\"20250109\",\"close\":\"3.866\",\"open\":\"3.863\"},{\"volume\":\"826572500\",\"high\":\"3.875\",\"low\":\"3.822\",\"rsi\":16.1403509,\"day\":\"20250110\",\"close\":\"3.823\",\"open\":\"3.865\"},{\"volume\":\"949394700\",\"high\":\"3.826\",\"low\":\"3.793\",\"rsi\":14.3410853,\"day\":\"20250113\",\"close\":\"3.808\",\"open\":\"3.801\"},{\"volume\":\"1644546233\",\"high\":\"3.918\",\"low\":\"3.809\",\"rsi\":56.0794045,\"day\":\"20250114\",\"close\":\"3.906\",\"open\":\"3.815\"},{\"volume\":\"742049621\",\"high\":\"3.904\",\"low\":\"3.877\",\"rsi\":49.0514905,\"day\":\"20250115\",\"close\":\"3.883\",\"open\":\"3.896\"},{\"volume\":\"1109005172\",\"high\":\"3.933\",\"low\":\"3.861\",\"rsi\":49.8327759,\"day\":\"20250116\",\"close\":\"3.885\",\"open\":\"3.896\"},{\"volume\":\"847699295\",\"high\":\"3.922\",\"low\":\"3.868\",\"rsi\":54.7169811,\"day\":\"20250117\",\"close\":\"3.898\",\"open\":\"3.875\"},{\"volume\":\"920294300\",\"high\":\"3.949\",\"low\":\"3.908\",\"rsi\":61.6,\"day\":\"20250120\",\"close\":\"3.917\",\"open\":\"3.921\"},{\"volume\":\"743926440\",\"high\":\"3.941\",\"low\":\"3.905\",\"rsi\":63.3333333,\"day\":\"20250121\",\"close\":\"3.922\",\"open\":\"3.937\"},{\"volume\":\"1099680655\",\"high\":\"3.916\",\"low\":\"3.868\",\"rsi\":44.1666667,\"day\":\"20250122\",\"close\":\"3.886\",\"open\":\"3.916\"},{\"volume\":\"1038592839\",\"high\":\"3.958\",\"low\":\"3.894\",\"rsi\":50.0,\"day\":\"20250123\",\"close\":\"3.897\",\"open\":\"3.915\"},{\"volume\":\"1143647489\",\"high\":\"3.943\",\"low\":\"3.883\",\"rsi\":63.559322,\"day\":\"20250124\",\"close\":\"3.929\",\"open\":\"3.889\"},{\"volume\":\"1305384964\",\"high\":\"3.945\",\"low\":\"3.904\",\"rsi\":51.5021459,\"day\":\"20250127\",\"close\":\"3.907\",\"open\":\"3.936\"},{\"volume\":\"751549710\",\"high\":\"3.934\",\"low\":\"3.879\",\"rsi\":42.4778761,\"day\":\"20250205\",\"close\":\"3.887\",\"open\":\"3.930\"},{\"volume\":\"1388636482\",\"high\":\"3.937\",\"low\":\"3.881\",\"rsi\":61.6236162,\"day\":\"20250206\",\"close\":\"3.932\",\"open\":\"3.884\"},{\"volume\":\"1930631373\",\"high\":\"4.014\",\"low\":\"3.926\",\"rsi\":74.7720365,\"day\":\"20250207\",\"close\":\"3.988\",\"open\":\"3.933\"},{\"volume\":\"1267264550\",\"high\":\"4.000\",\"low\":\"3.974\",\"rsi\":75.6457565,\"day\":\"20250210\",\"close\":\"3.992\",\"open\":\"3.989\"},{\"volume\":\"999035889\",\"high\":\"3.998\",\"low\":\"3.963\",\"rsi\":65.8634538,\"day\":\"20250211\",\"close\":\"3.976\",\"open\":\"3.997\"},{\"volume\":\"978953664\",\"high\":\"4.019\",\"low\":\"3.960\",\"rsi\":75.2727273,\"day\":\"20250212\",\"close\":\"4.014\",\"open\":\"3.974\"},{\"volume\":\"1175822696\",\"high\":\"4.034\",\"low\":\"3.998\",\"rsi\":69.1666667,\"day\":\"20250213\",\"close\":\"4.004\",\"open\":\"4.009\"},{\"volume\":\"1292428680\",\"high\":\"4.040\",\"low\":\"3.997\",\"rsi\":76.5873016,\"day\":\"20250214\",\"close\":\"4.034\",\"open\":\"4.000\"},{\"volume\":\"1334102006\",\"high\":\"4.053\",\"low\":\"4.012\",\"rsi\":78.1395349,\"day\":\"20250217\",\"close\":\"4.041\",\"open\":\"4.044\"},{\"volume\":\"1246591063\",\"high\":\"4.058\",\"low\":\"3.996\",\"rsi\":58.2608696,\"day\":\"20250218\",\"close\":\"4.012\",\"open\":\"4.035\"},{\"volume\":\"1019076858\",\"high\":\"4.041\",\"low\":\"4.000\",\"rsi\":65.9292035,\"day\":\"20250219\",\"close\":\"4.033\",\"open\":\"4.005\"},{\"volume\":\"1018603498\",\"high\":\"4.033\",\"low\":\"4.008\",\"rsi\":58.0487805,\"day\":\"20250220\",\"close\":\"4.021\",\"open\":\"4.029\"},{\"volume\":\"1437266514\",\"high\":\"4.080\",\"low\":\"4.020\",\"rsi\":74.6323529,\"day\":\"20250221\",\"close\":\"4.075\",\"open\":\"4.032\"},{\"volume\":\"1538578218\",\"high\":\"4.089\",\"low\":\"4.041\",\"rsi\":66.6666667,\"day\":\"20250224\",\"close\":\"4.062\",\"open\":\"4.070\"},{\"volume\":\"892489991\",\"high\":\"4.051\",\"low\":\"4.008\",\"rsi\":46.9314079,\"day\":\"20250225\",\"close\":\"4.021\",\"open\":\"4.035\"},{\"volume\":\"1345658133\",\"high\":\"4.055\",\"low\":\"4.019\",\"rsi\":59.0277778,\"day\":\"20250226\",\"close\":\"4.054\",\"open\":\"4.028\"},{\"volume\":\"1128585642\",\"high\":\"4.069\",\"low\":\"4.028\",\"rsi\":63.28125,\"day\":\"20250227\",\"close\":\"4.067\",\"open\":\"4.056\"},{\"volume\":\"1329334000\",\"high\":\"4.065\",\"low\":\"3.982\",\"rsi\":37.037037,\"day\":\"20250228\",\"close\":\"3.994\",\"open\":\"4.049\"},{\"volume\":\"1145768613\",\"high\":\"4.027\",\"low\":\"3.966\",\"rsi\":33.8762215,\"day\":\"20250303\",\"close\":\"3.981\",\"open\":\"3.995\"},{\"volume\":\"1012184770\",\"high\":\"3.984\",\"low\":\"3.952\",\"rsi\":32.8063241,\"day\":\"20250304\",\"close\":\"3.977\",\"open\":\"3.960\"},{\"volume\":\"1191901642\",\"high\":\"3.999\",\"low\":\"3.968\",\"rsi\":42.3728814,\"day\":\"20250305\",\"close\":\"3.994\",\"open\":\"3.980\"}],\"atr21Percent\":\"1.21%\",\"hotOut\":\"半导体,光伏设备,电池,房地产服务,房地产开发,钢铁行业,光学光电子,医疗服务,农牧饲渔,游戏\",\"stock\":{\"chg\":0,\"chgP\":0,\"close\":3.994,\"curDate\":\"20250305\",\"high\":3.977,\"low\":3.980,\"ma10\":4.02,\"ma20\":4.01,\"ma5\":4.00,\"open\":0,\"stockName\":\"沪深300ETF\",\"volume\":6650672,\"volumeMoney\":11919016},\"hotIn\":\"银行,通信设备,工程机械,汽车整车,电子元件,电机,专用设备,汽车零部件,通信服务,有色金属\"}";
//        String codeSet = "510300,159941,159915,512760,516510,518880,513090,688608";
        String codeSet = "510300,159941";
        List<String> toDayBuyList = Lists.newArrayList();
        Map<String,BacktestResult> resultMap= Maps.newHashMap();
        for (String code : StringUtils.split(codeSet, ",")) {
            String jsonStr = http(code);
            BacktestResult result = runBacktest(jsonStr);
            resultMap.put(code,result);

            // 输出结果
            String stockName = result.getStock().getStockName();
            System.out.println(stockName +":"+code+":交易记录：");
            result.trades.forEach(t ->
                    System.out.printf("%s 买入rsi=%.3f,close=@%.3f -> %s 卖出rsi=%.3f,close=@%.3f (收益率:%.2f%%)%n",
                            t.buyDate, t.buyDataItem.rsi, t.buyPrice, t.sellDate,t.sellDataItem.rsi, t.sellPrice, t.returnRate * 100));
            double maxReturnRate = result.trades.stream().filter(t -> t.returnRate < 0).mapToDouble(t -> t.returnRate).min().getAsDouble();

            System.out.println(String.format("总收益率: %.2f%%", result.totalReturn * 100));
            System.out.println(String.format("最大回撤率配置:-%.2f%%", result.getMaxDrawDownConfig() * 100));
            System.out.println(String.format("单次交易最大回撤率:%.2f%%", maxReturnRate * 100));
            if (result.isToDayBuy) {
                toDayBuyList.add(stockName+"_"+code);
            }
            System.out.println("==========================================");
        }
        for (String today : toDayBuyList) {
            System.out.println("今日买入："+today);
        }


        System.out.println(JSONObject.toJSONString(resultMap));

    }
}